Удаление первого контроллера домена¶
Удаление первого контроллера домена (КД) возможно и при наличии доступа к нему, и если первый контроллер домена недоступен.
Подготовка к удалению¶
Важно
Во время переноса (удаления) первого КД следует воздержаться от сторонних операций с контроллерами. Минимизировать запросы к LDAP. В процессе процедуры обновления реплики некоторые возможности будут недоступны.
Перед удалением первого КД необходимо проверить наличие /etc/ssl/freeipa/ca.key на всех КД с ролью pkiproxy и на КД, который предполагается сделать первым.
До начала процедуры удаления первого контроллера домена необходимо произвести следующие действия:
Выполнить резервное копирование всех контроллеров домена одним из следующих способов:
создание снапшотов,
согласно данной инструкции, при условии, что контроллеры не являются виртуальными машинами.
Проверить доступность выделения на
id_rangeна новом контроллере. Если пользователи не создавались на контроллерах, отличных от первого, то новыеid_rangeпредоставлены не будут. Решением проблемы может стать добавление пользователя на любом КД, отличном от первого. Либо, обращение к LDAP и изменениеldif. Выделяемые на контроллереid_rangeнаходятся в LDAP по пути:cn=Posix IDs,cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config. На новый первый кд можно перенести данные со старого первого КД, используя 2 способа:ldapsearchиldapmodify
admin@dc-1:~$ ldapsearch -Q -LLL -b "cn=posix ids,cn=distributed numeric assignment plugin,cn=plugins,cn=config" -o ldif-wrap=no > old.ldif admin@dc-1:~$ scp old.dif dc-2:/tmp/new.ldif admin@dc-1:~$ ssh dc-2 admin@dc-2:~$ nano /tmp/new.ldif --- dn: cn=posix ids,cn=distributed numeric assignment plugin,cn=plugins,cn=config changetype: modify replace: dnaMaxValue dnaMaxValue: [значение] changetype: modify replace: dnaNextValue dnaNextValue: [значение] --- admin@dc-2:~$ ldapmodify /tmp/new.ldif
В выводе не должно быть ошибок - строк со словами Invalid, wrong, error и т.д.
Примечание
Показаны примерные данные, которые должны содержаться в файле:
admin@dc-2:~$ nano /tmp/new.ldif --- dn: cn=posix ids,cn=distributed numeric assignment plugin,cn=plugins,cn=config changetype: modify replace: dnaMaxValue dnaMaxValue: [значение] changetype: modify replace: dnaNextValue dnaNextValue: [значение]
ldapsearchиipa-replica-manageadmin@dc-1:~$ dnamaxvalue=[желаемый максимальный id] admin@dc-1:~$ let dnaminvalue=$dnamaxvalue-200000 admin@dc-1:~$ sudo ipa-replica-manage dnanextrange-set $HOSTNAME ${dnaminvalue}-${dnamaxvalue}
Если контроллер домена недоступен¶
Если контроллер домена вышел из строя внезапно, и не осталось копии, необходимо:
Если служба:
aldpro-roles-management
была запущена на вышедшем из строя контроллере домена, необходимо запустить ее на любом доступном контроллере, необязательно первом. Важно, чтобы она была запущена только на одном контроллере домена.
Чтобы включить службу:
systemctl start aldpro-roles-management
Чтобы отключить службу:
systemctl stop aldpro-roles-management
Начиная с версии 2.5.0 ALD Pro службы aldpro-roles-sweeper, aldpro-process-pending-roles, aldpro-check-in-restore объединены в одну службу aldpro-roles-management, сохранившую функционал трех предыдущих. Данная служба имеет созможность форсированной отладки путем изменения интервалов запуска тех или иных функций службы.
Атрибуты службы:
-r - период, в который будет запускаться рендер ролей ожидающих активацию (default: 1m). Значение 0 отключит данную функцию;
-f - период, в который будет запускаться проверка/исправление целостности ролей после репликации (default: 1h). Значение 0 отключит данную функцию;
-u - период, в который будет запускаться сборщик мусора (default: 24h). Значение 0 отключит данную функцию. Формат: целое положительное число [s-секунды | m-минуты | h-часы ] либо 0;
-ust - примерное время, в которое должен будет запускаться сборщик мусора минимальное значение среди остальных флагов (default: 00:00). Формат: часы:минуты.
Период рендера ролей должен быть самым маленьким иначе демон не запустится
Пример передачи аргументов в демона и возврата дефолтных значений:
systemctl stop aldpro-roles-management
systemctl set-environment ROLES_DAEMON_ARGS="-r 10s -f 15s"
systemctl start aldpro-roles-management
Пример возврата работы демона на значениях по умолчанию:
systemctl stop aldpro-roles-management
systemctl unset-environment ROLES_DAEMON_ARGS
systemctl start aldpro-roles-management
Удалить первый контроллер домена из всех серверов мониторинга:
произвести авторизацию на сервере мониторинга;
слева нажать Configuration - Hosts;
отметить галкой нужный сервер и нажать кнопку Delete.
Проверить, что на КД, который заменит первый имеется файл
/etc/ssl/freeipa/ca.key.Адреса контроллеров в файле
/etc/resolv.confНа каждом компьютере в домене в файле
/etc/resolv.confнеобходимо изменить адрес удаляемого сервера на адрес любого другого. Пример: Если адрес первого контроллера домена10.2.0.10, а адрес второго контроллера домена10.2.0.11, то содержимое файла должно быть следующим:
domain <имя домена> nameserver 10.2.0.11
Данное действие можно выполнить при помощи задания автоматизации или групповой политикой. Пример кода:
replace_string: file.replace: - name: /etc/resolv.conf - pattern: 10.2.0.10 - repl: 10.2.0.11
Адреса контроллеров в файле
/etc/sssd/sssd.conf
На каждом компьютере в домене в файле /etc/sssd/sssd.conf необходимо изменить адрес удаляемого сервера на адрес любого другого. Пример:
[domain/ald.company.lan] ... ipa_server = _srv_,<fqdn.НОВОГО.КД> ...
Важно помнить, что на контроллерах домена параметр будет содержать собственный адрес, его менять не следует.
На всех клиентах (в т.ч. части серверной группировки), которые вводились в домен через удаляемый контроллер внести изменения в файл
/etc/ldap/ldap.conf:
...
URI ldaps://<fqdn.НОВОГО.КД>
...
На всех клиентах (в т.ч. части серверной группировки), которые вводились в домен через удаляемый контроллер внести изменения в файл ``/etc/ipa/default.conf``(см. Конфигурационный файл FreeIPA /etc/ipa/default.conf):
[global]
...
server = <fqdn.НОВОГО.КД>
...
xmlrpc_uri = https://<fqdn.НОВОГО.КД>/ipa/xml
...
Перезапустить службы sssd после изменения параметров:
sudo systemctl restart sssd
Внести изменения в параметры DNS зон (Роли и службы сайта > Служба разрешения имён):
выбрать прямую зону, открыть ее записи, перейти в Параметры зоны, изменить Полномочный сервер имён на fqdn нового «первого» контроллера;
выбрать обратную зону, открыть ее записи, перейти в Параметры зоны, изменить Полномочный сервер имён на fqdn нового «первого» контроллера.
Если есть только 1 корневой
NTP-сервер(Роли и службы сайта > Служба синхронизации времени > Корневые NTP-серверы домена) добавить новый, выбрав новый «первый» КД из доступных. Удалить тот, который ссылается на контроллер, который будет удален. После действий проверить изменения в LDAP:
suffix=$(ldapsearch -Q -LLL -s base|grep dn:|cut -d ' ' -f2)
ldapsearch -Q -LLL -b cn=ntp,cn=services,cn=aldpro,cn=etc,$suffix -o ldif-wrap=no
Важно помнить, что если много внешних ntp-серверов в конец запроса можно добавить isexternal=FALSE, тогда не будут показаны внешние сервера.
Убедиться, что между удаляемым контроллером домена и другим контроллером домена установлены двусторонние соглашения о репликации. Сделать это можно двумя способами:
На портале управления в разделе Управление доменом - Сайты и службы - Соглашения о репликации должны быть двусторонние стрелки между контроллерами домена.
В консоли любого контроллера домена командой (вместо
dc=aldpro,dc=testнеобходимо подставить имя своего домена):
suffix=$(ldapsearch -Q -LLL -s base|grep dn:|cut -d ' ' -f2) ldapsearch -D -Q -LLL "cn=directory manager" -W -b "cn=topology,cn=ipa,cn=etc,$suffix" unset suffix
В выводе команды должно быть
ipaReplTopoSegmentDirection: bothдля всех контроллеров домена.Если это не так, необходимо восстановить репликации. В противном случае, удаление контроллера домена будет невозможно.
Проверить репликацию между удаляемым КД и новым «первым» КД. Проверить не идет ли в данный момент синхронизация:
suffix=$(ldapsearch -Q -LLL -s base|grep dn:|cut -d ' ' -f2)
ds-replcheck online -D "cn=Directory Manager" -m ldap://<fqdn.старого.кд>:389 -r ldap://<fqdn.новоого.кд>:389 -b $suffix
dsconf -j ALD-COMPANY-LAN replication status --suffix $domain_name|grep update-in-progres -A1
unset suffix
В случае отсутствия команды dsconf следует установить ее следующей командой:
sudo apt-get install python3-lib389
Важно помнить, что не должны совпадать krbloginfailedcount. Если идет репликация - дождаться окончания.
На новом первом КД внести изменения: значения атрибута
rbtaSubsystemConfigдолжны соответствовать"is_master": true, "setup_pkiproxy": true:
suffix=$(ldapsearch -Q -LLL -s base|grep dn:|cut -d ' ' -f2)
ldapsearch -Q -LLL -b cn=computers,cn=accounts,$suffix fqdn=*$HOSTNAME* dn rbtaSubsystemConfig -o ldif-wrap=no > new-config.ldif
nano new-config.ldif
---
dn: fqdn=dc-2.ald.company.test,cn=computers,cn=accounts,dc=ald,dc=company,dc=test
changetype: modify
replace: rbtaSubsystemConfig
rbtaSubsystemConfig: {"config_state": "applied", "is_master": true, "setup_gc": true, "setup_pkiproxy": true, "setup_syncer": true, "config_state_local": "applied"}
---
ldapmodify -f new-config.ldif
Удаление контроллера домена¶
От имени
root'ана НОВОМ первом КД выполнить команду:ipa-replica-manage del <fqdn.старого.кд>
Авторизоваться на портале управления по адресу
https://<fqdn.НОВОГО.КД>Проверить успешность удаления можно на портале управления в разделе Управление доменом - Сайты и службы - Контроллеры домена. Удаленного контроллера домена не должно быть в списке.
Зайти в раздел Роли и службы сайта - Служба разрешения имён.
В списке Имя зоны кликнуть на имя вашего домена.
В строке поиска набрать имя удаленного контроллера домена.
Галочкой выделить все появившиеся записи и нажать кнопку Удалить.
Пункты 6-7 повторить до полного удаления всех записей, относящихся к удаленному контроллеру домена.
Запустить процедуру обновления первого КД. Важно помнить, что у модуля синхронизации локальная база данных, нужно выполнить перенос базы:
aldpro-server-install -d $(hostname -d) -n $(hostname -s) --ip $(hostname -i) --setup_syncer --setup_gc --no-reboot --update
После ввода команды система запросит ввести пароль администратора домена.
Внимание
Если после удаления контроллера домена подсистемы невозможно развернуть, необходимо проверить содержимое файла /etc/resolv.conf на компьютере, на котором будет развернута подсистема - в файле не должно быть адреса удалённого КД